home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Input 64
/
Input_64_87-08_1987_Verlag_Heinz_Weise_de.d64
/
assembler 1
< prev
next >
Wrap
Text File
|
2023-02-26
|
2KB
|
81 lines
;Joystick-Abfrage per USR()-Funktion
;_
:usrvec = $311 ;USR()-Vektor
:toint = $b1aa ;FAC in Integer wandeln
:tofac = $bc44 ;Integerzahl in FAC uebertragen
:illq = $b248 ;'ILLEGAL QUANTITY' ausgeben
:cia = $dc00 ;fuer Port2. Port1 liegt bei $dd00
:ddra = cia+2 ;Datenrichtungsregister Port A
:pra = cia ;Datenregister Port A
org $801 ;Start am BASIC-Anfang
:next w basend ;Pointer auf Ende
:linnum w 1987 ;Zeilennummer
:sys b $9e ;Token fuer SYS
:adrs b "2070" ;Adresse im Klartext
:linend b 0 ;Kennzeichen fuer Zeilenende
:basend w 0 ;Kennzeichen fuer Programmende
s 2070-*
:init lda #<usrjoy ;USR()-Vektor auf eigene
sta usrvec ;Routine verbiegen
lda #>usrjoy
sta usrvec+1
lda #<new ;BASIC-Anfang hinter
sta $2b ;Programm verlegen
lda #>new
sta $2c
jsr $a659 ;RESTORE
jmp $a7ae ;RUN
;Hier beginnt die USR()-Routine
;_
:usrjoy jsr toint ;FAC in Akku/Y
cmp #0 ;High-Byte = 0?
bne error ;sonst Fehler
sei ;Tastatur abhaengen
ldx #%11100000 ;Joystick-Bits als Eingang
stx ddra
lda pra ;Bitmuster fuer Joystick
ldx #%11111111 ;Port A komplett als
stx ddra ;Ausgang (Original)
cli ;Tastaturabfrage wieder zulassen
cpy #1 ;x-Richtung gefragt?
beq joyx
cpy #2 ;y-Richtung gefragt?
beq joyy
cpy #3 ;Feuer gefragt?
beq joybut
:error jmp illq ;sonst Fehler
:joybut ora #$08 ;Feuer nie negativ
lsr ;gefragte Bits in Carry
:joyx lsr
lsr
:joyy lsr
bcs plus
lda #$ff ;Minus 1
tay
bne raus ;springt immer
:plus lsr
bcs null
lda #0 ;Plus 1
ldy #1
bne raus
:null lda #0 ;Null
tay
:raus sta $62 ;fuer TOFAC
sty $63
ldx #$90 ;auch fuer TOFAC
lda #0 ;Flag fuer numerisches
sta $0d ;Ergebnis
jmp tofac ;TOFAC endet mit RTS
:ende b 0
:new w 0